package cn.com.cis.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import cn.com.cis.domain.GlobalParam;
import cn.com.cis.domain.GlobalParamGroup;
import cn.com.cis.persistence.GlobalParameterMapper;
import cn.com.cis.plugins.mybatis.PageHelper;

/**
 * 全局参数管理服务模块
 * @author Haishen Hu
 * @2015年10月27日
 */
@Service
@Transactional
public class GlobalParamService {

	/**
	 * 数据持久化模型对象
	 */
	@Autowired
	private GlobalParameterMapper mapper;
	
	//--------------------------------组别管理服务-------------------------------------
	
	/**
	 * 添加全局参数组别
	 * @param globalParamGroup 组对象
	 */
	@Transactional
	public void addGParamGroup(GlobalParamGroup globalParamGroup){
		mapper.addGroup(globalParamGroup);
	}
	
	/**
	 * 根据组ID删除组别
	 * @param id 组ID
	 */
	@Transactional
	public void delGParamGroupById(int id){
		mapper.delGroupById(id);
	}
	
	/**
	 * 修改组信息
	 * @param group 组
	 */
	@Transactional
	public void modiGParamGroup(GlobalParamGroup group){
		mapper.modifyGroup(group);
	}
	
	/**
	 * 查询所有组别
	 * @return 组别列表
	 */
	@Transactional
	public List<GlobalParamGroup> findAllGParamGroup(){
		return mapper.findAllGroup();
	}
	
	/**
	 * 分页查询查询所有组别
	 * @return 组别列表
	 */
	@Transactional
	public List<GlobalParamGroup> findGParamGroupForPage(int page,int pageSize){
		PageHelper.startPage(page, pageSize);
		return mapper.findAllGroup();
	}
	
	/**
	 * 根据组别ID查询组别
	 * @param id 组别ID
	 * @return 组信息
	 */
	@Transactional
	public GlobalParamGroup findGParamGroupById(int id){
		return mapper.findGroupById(id);
	}
	
	/**
	 * 根据组名称查询组
	 * @param name
	 * @return
	 */
	@Transactional
	public List<GlobalParamGroup> findGParamGroupByName(String name) {
		return mapper.findGroupByName(name);
	}
	
	/**
	 * 查询组信息
	 * @param paramGroup 组对象
	 * @return 组信息
	 */
	@Transactional
	public GlobalParamGroup findGParamGroup(GlobalParamGroup paramGroup){
		return mapper.findGroupById(paramGroup.getId());
	}
	
	//--------------------------------参数管理服务-------------------------------------
	
	/**
	 * 添加全局参数
	 * @param globalParam 全局参数对象
	 */
	@Transactional
	public void addGParam(GlobalParam globalParam){
		mapper.addGlobalParam(globalParam);
	}
	
	/**
	 * 删除全局参数
	 * @param param 全局参数对象
	 */
	@Transactional
	public void delGParam(GlobalParam param){
		this.delGParamById(param.getId());
	}
	
	/**
	 * 根据ID删除全局参数
	 * @param id 全局参数ID
	 */
	@Transactional
	public void delGParamById(int id){
		mapper.delGlobalParamById(id);
	}

	/**
	 * 根据组ID删除全局参数
	 * @param groupId 组ID
	 */
	@Transactional
	public void delGParamByGroupId(int groupId){
		mapper.delGlobalParamByGroupId(groupId);
	}
	
	/**
	 * 修改全局参数
	 * @param param 全局参数
	 */
	@Transactional
	public void modiGParam(GlobalParam param){
		mapper.modifyGlobalParam(param);
	}
	
	/**
	 * 查询所有的全局参数
	 * @return 全局参数列表
	 */
	@Transactional
	public List<GlobalParam> findAllGParam(int page,int pageSize){
		PageHelper.startPage(page, pageSize);
		return mapper.findAllGlobalParam();
	}
	
	/**
	 * 根据组ID查找全局参数
	 * @param groupId 组ID
	 * @return 参数列表
	 */
	@Transactional
	public List<GlobalParam> findGParamByGroupId(int groupId){
		return mapper.findGlobalParamByGroupId(groupId);
	}
	
	/**
	 * 根据ID查找全局参数
	 * @param id 参数ID
	 * @return 参数对象
	 */
	@Transactional
	public GlobalParam findGParamById(int id){
		return mapper.findGlobalParamById(id);
	}
	
	/**
	 * 根据名称查找参数
	 * @param name
	 * @return
	 */
	@Transactional
	public List<GlobalParam> findGParamByName(String name) {
		return mapper.findGlobalParamByName(name);
	}
	
}
